home *** CD-ROM | disk | FTP | other *** search
-
-
-
- DDDDMMMMNNNNEEEETTTTSSSSEEEENNNNDDDD((((3333ddddmmmm)))) DDDDMMMMNNNNEEEETTTTSSSSEEEENNNNDDDD((((3333ddddmmmm))))
-
-
-
- NNNNAAAAMMMMEEEE
- dmNetSend, dmNetRecv - send and receive DMbuffers
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ####iiiinnnncccclllluuuuddddeeee <<<<ddddmmmmeeeeddddiiiiaaaa////ddddmmmmnnnneeeetttt....hhhh>>>>
-
- DDDDMMMMssssttttaaaattttuuuussss ddddmmmmNNNNeeeettttSSSSeeeennnndddd((((DDDDMMMMNNNNeeeettttCCCCoooonnnnnnnneeeeccccttttiiiioooonnnn ccccoooonnnnnnnneeeeccccttttiiiioooonnnn,,,, DDDDMMMMbbbbuuuuffffffffeeeerrrr ddddmmmmbbbbuuuuffff))));;;;
-
- DDDDMMMMssssttttaaaattttuuuussss ddddmmmmNNNNeeeettttRRRReeeeccccvvvv((((DDDDMMMMNNNNeeeettttCCCCoooonnnnnnnneeeeccccttttiiiioooonnnn ccccoooonnnnnnnneeeeccccttttiiiioooonnnn,,,, DDDDMMMMbbbbuuuuffffffffeeeerrrr ****ddddmmmmbbbbuuuuffff))));;;;
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- ddddmmmmNNNNeeeettttSSSSeeeennnndddd sends the specified DMbuffer over the open data connection
- specified by _D_M_n_e_t_c_o_n_n_e_c_t_i_o_n.
-
- ddddmmmmNNNNeeeettttRRRReeeeccccvvvv returns a filled DMbuffer from the open data connection
- specified by _D_M_n_e_t_c_o_n_n_e_c_t_i_o_n. The DMbuffer is allocated from the
- DMbufferpool which had been previous registered with the call to
- ddddmmmmNNNNeeeettttRRRReeeeggggiiiisssstttteeeerrrrPPPPoooooooollll or is pre-allocated and passed into dmNetRecv, after a
- call to ddddmmmmNNNNeeeettttRRRReeeeggggiiiisssstttteeeerrrrBBBBuuuuffffffffeeeerrrr ....
-
- TTTTIIIIMMMMEEEESSSSTTTTAAAAMMMMPPPPSSSS
- If the caller does not set the MSC associated with the _D_M_b_u_f_f_e_r ,
- ddddmmmmNNNNeeeettttSSSSeeeennnndddd will provide a monotonically increasing value. To avoid
- possible confusion, callers should either _a_l_w_a_y_s set an MSC value, or
- _n_e_v_e_r set one.
-
- ddddmmmmNNNNeeeettttSSSSeeeennnndddd and ddddmmmmNNNNeeeettttRRRReeeeccccvvvv will cooperate in an attempt to make the UST
- value at the receiving end of a network connection equivalent to the UST
- value that was set at the sending end. This is accomplished by converting
- the UST to an equivalent "wall clock" value (via
- ddddmmmmGGGGeeeettttUUUUSSSSTTTTCCCCuuuurrrrrrrreeeennnnttttTTTTiiiimmmmeeeePPPPaaaaiiiirrrr). This wall clock value is sent to the receiving
- end, which converts it back to an equivalent local UST value. For this
- to be effective, the system clocks on the two machines must be
- synchronized by some external mechanism, such as _x_n_t_p_d or _t_i_m_e_d.
-
- If the sender sets the UST value to zero, ddddmmmmNNNNeeeettttSSSSeeeennnndddd and ddddmmmmNNNNeeeettttRRRReeeeccccvvvv will
- leave the value undisturbed. This is a convenient way for the sender to
- indicate that the receiver that the clock value is not to be trusted.
-
- DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
- Depending on the underlying transport protocol, ddddmmmmNNNNeeeettttSSSSeeeennnndddd and ddddmmmmNNNNeeeettttRRRReeeeccccvvvv
- may or may not block (see the NNNNOOOOTTTTEEEE below). They return DM_SUCCESS or
- DM_FAILURE.
-
- ddddmmmmNNNNeeeettttSSSSeeeennnndddd and ddddmmmmNNNNeeeettttRRRReeeeccccvvvv fail if one or more of the following are true:
-
- EEEEIIIINNNNVVVVAAAALLLL ccccoooonnnnnnnneeeeccccttttiiiioooonnnn is not a valid connection descriptor.
-
- EEEESSSSHHHHUUUUTTTTDDDDOOOOWWWWNNNN the peer has closed the underlying network connection.
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- DDDDMMMMNNNNEEEETTTTSSSSEEEENNNNDDDD((((3333ddddmmmm)))) DDDDMMMMNNNNEEEETTTTSSSSEEEENNNNDDDD((((3333ddddmmmm))))
-
-
-
- In addition, ddddmmmmNNNNeeeettttSSSSeeeennnndddd can fail as follows:
-
- EEEEBBBBUUUUSSSSYYYY insufficient internal resources to send the buffer (only
- when the underlying transport mechanism is using a DMS
- fifo; usually indicates that the receiver is not reading
- quickly enough).
-
- EEEEPPPPIIIIPPPPEEEE receiver died in the middle of a write system call (dmNet
- catches SSSSIIIIGGGGPPPPIIIIPPPPEEEE and reports errno as EEEEPPPPIIIIPPPPEEEE).
-
- ddddmmmmNNNNeeeettttRRRReeeeccccvvvv can fail as follows:
-
- EEEEBBBBUUUUSSSSYYYY no data is available to be read (only when the underlying
- transport mechanism returns filled DMbuffers via a DMS
- fifo; currently only DDDDMMMMNNNNEEEETTTT____LLLLOOOOCCCCAAAALLLL).
-
- EEEENNNNOOOOMMMMEEEEMMMM no DMbuffer could be allocated for the incoming data.
-
- EEEENNNNOOOODDDDAAAATTTTAAAA end of file reached - no more data available.
-
- EEEERRRRAAAANNNNGGGGEEEE the buffer allocated from the pool is too small to hold
- the received data.
-
- NNNNOOOOTTTTEEEE
- Depending on the underlying transport mechanism, the exact semantics of
- ddddmmmmNNNNeeeettttSSSSeeeennnndddd and ddddmmmmNNNNeeeettttRRRReeeeccccvvvv will vary. Some transports never block, instead
- returning EEEEBBBBUUUUSSSSYYYY when there are insufficient resources or no waiting data.
- Others block if only some of the data has arrived on the network
- connection, or if the outgoing network connection is too full to deliver
- all of the data into the kernel. Applications that are concerned about
- timely execution of these routines should use sssseeeelllleeeecccctttt and ddddmmmmNNNNeeeettttDDDDaaaattttaaaaFFFFdddd to
- determine the likelihood that data is ready. It should go without saying
- that they must also carefully check the return and error values. Error
- values are may be obtained through ddddmmmmGGGGeeeettttEEEErrrrrrrroooorrrr
-
- Most applications will want to call these routines in a separate thread.
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- dmBufferAllocate(3dm), dmGetUSTCurrentTimePair(3dm), dmNetDataFd(3dm),
- dmNetRegisterPool(3dm), dmNetRegisterBuffer(3dm), select(2), xntpd(1L),
- timed(1M)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-